package br.siseventos.model;
// Generated 29/10/2012 23:23:36 by Hibernate Tools 3.2.1.GA

import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import static javax.persistence.GenerationType.IDENTITY;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.UniqueConstraint;

/**
 * TbAtividade generated by hbm2java
 */
@Entity
@Table(name = "tb_atividade", catalog = "SisEventosDB", uniqueConstraints =
@UniqueConstraint(columnNames = {"cod_evento", "nme_atividade"}))
public class TbAtividade extends BaseModel {

    private Integer idtAtividade;
    private TbEvento tbEvento;
    private TdTipoAtividade tdTipoAtividade;
    private String nmeAtividade;
    private String dscAtividade;
    private Date dtaInicioAtividade;
    private Date dtaTerminoAtividade;
    private Set<TaAlocacaoLocal> taAlocacaoLocals = new HashSet<TaAlocacaoLocal>(0);
    private Set<TaPedidoTipoRecurso> taPedidoTipoRecursos = new HashSet<TaPedidoTipoRecurso>(0);
    private Set<TbTarefa> tbTarefas = new HashSet<TbTarefa>(0);
    private Set<TaAlocacaoServico> taAlocacaoServicos = new HashSet<TaAlocacaoServico>(0);
    private Set<TaAlocacaoRecurso> taAlocacaoRecursos = new HashSet<TaAlocacaoRecurso>(0);
    private Set<TaPedidoServico> taPedidoServicos = new HashSet<TaPedidoServico>(0);
    private Set<TaParticipacao> taParticipacaos = new HashSet<TaParticipacao>(0);

    public TbAtividade() {
    }

    public TbAtividade(TbEvento tbEvento, TdTipoAtividade tdTipoAtividade, String nmeAtividade, String dscAtividade, Date dtaInicioAtividade, Date dtaTerminoAtividade) {
        this.tbEvento = tbEvento;
        this.tdTipoAtividade = tdTipoAtividade;
        this.nmeAtividade = nmeAtividade;
        this.dscAtividade = dscAtividade;
        this.dtaInicioAtividade = dtaInicioAtividade;
        this.dtaTerminoAtividade = dtaTerminoAtividade;
    }

    public TbAtividade(TbEvento tbEvento, TdTipoAtividade tdTipoAtividade, String nmeAtividade, String dscAtividade, Date dtaInicioAtividade, Date dtaTerminoAtividade, Set<TaAlocacaoLocal> taAlocacaoLocals, Set<TaPedidoTipoRecurso> taPedidoTipoRecursos, Set<TbTarefa> tbTarefas, Set<TaAlocacaoServico> taAlocacaoServicos, Set<TaAlocacaoRecurso> taAlocacaoRecursos, Set<TaPedidoServico> taPedidoServicos, Set<TaParticipacao> taParticipacaos) {
        this.tbEvento = tbEvento;
        this.tdTipoAtividade = tdTipoAtividade;
        this.nmeAtividade = nmeAtividade;
        this.dscAtividade = dscAtividade;
        this.dtaInicioAtividade = dtaInicioAtividade;
        this.dtaTerminoAtividade = dtaTerminoAtividade;
        this.taAlocacaoLocals = taAlocacaoLocals;
        this.taPedidoTipoRecursos = taPedidoTipoRecursos;
        this.tbTarefas = tbTarefas;
        this.taAlocacaoServicos = taAlocacaoServicos;
        this.taAlocacaoRecursos = taAlocacaoRecursos;
        this.taPedidoServicos = taPedidoServicos;
        this.taParticipacaos = taParticipacaos;
    }

    @Id
    @GeneratedValue(strategy = IDENTITY)
    @Column(name = "idt_atividade", unique = true, nullable = false)
    public Integer getIdtAtividade() {
        return this.idtAtividade;
    }

    public void setIdtAtividade(Integer idtAtividade) {
        this.idtAtividade = idtAtividade;
    }

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "cod_evento", nullable = false)
    public TbEvento getTbEvento() {
        return this.tbEvento;
    }

    public void setTbEvento(TbEvento tbEvento) {
        this.tbEvento = tbEvento;
    }

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "cod_tipo_atividade", nullable = false)
    public TdTipoAtividade getTdTipoAtividade() {
        return this.tdTipoAtividade;
    }

    public void setTdTipoAtividade(TdTipoAtividade tdTipoAtividade) {
        this.tdTipoAtividade = tdTipoAtividade;
    }

    @Column(name = "nme_atividade", nullable = false, length = 80)
    public String getNmeAtividade() {
        return this.nmeAtividade;
    }

    public void setNmeAtividade(String nmeAtividade) {
        this.nmeAtividade = nmeAtividade;
    }

    @Column(name = "dsc_atividade", nullable = false, length = 200)
    public String getDscAtividade() {
        return this.dscAtividade;
    }

    public void setDscAtividade(String dscAtividade) {
        this.dscAtividade = dscAtividade;
    }

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "dta_inicio_atividade", nullable = false, length = 19)
    public Date getDtaInicioAtividade() {
        return this.dtaInicioAtividade;
    }

    public void setDtaInicioAtividade(Date dtaInicioAtividade) {
        this.dtaInicioAtividade = dtaInicioAtividade;
    }

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "dta_termino_atividade", nullable = false, length = 19)
    public Date getDtaTerminoAtividade() {
        return this.dtaTerminoAtividade;
    }

    public void setDtaTerminoAtividade(Date dtaTerminoAtividade) {
        this.dtaTerminoAtividade = dtaTerminoAtividade;
    }

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "tbAtividade")
    public Set<TaAlocacaoLocal> getTaAlocacaoLocals() {
        return this.taAlocacaoLocals;
    }

    public void setTaAlocacaoLocals(Set<TaAlocacaoLocal> taAlocacaoLocals) {
        this.taAlocacaoLocals = taAlocacaoLocals;
    }

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "tbAtividade")
    public Set<TaPedidoTipoRecurso> getTaPedidoTipoRecursos() {
        return this.taPedidoTipoRecursos;
    }

    public void setTaPedidoTipoRecursos(Set<TaPedidoTipoRecurso> taPedidoTipoRecursos) {
        this.taPedidoTipoRecursos = taPedidoTipoRecursos;
    }

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "tbAtividade")
    public Set<TbTarefa> getTbTarefas() {
        return this.tbTarefas;
    }

    public void setTbTarefas(Set<TbTarefa> tbTarefas) {
        this.tbTarefas = tbTarefas;
    }

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "tbAtividade")
    public Set<TaAlocacaoServico> getTaAlocacaoServicos() {
        return this.taAlocacaoServicos;
    }

    public void setTaAlocacaoServicos(Set<TaAlocacaoServico> taAlocacaoServicos) {
        this.taAlocacaoServicos = taAlocacaoServicos;
    }

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "tbAtividade")
    public Set<TaAlocacaoRecurso> getTaAlocacaoRecursos() {
        return this.taAlocacaoRecursos;
    }

    public void setTaAlocacaoRecursos(Set<TaAlocacaoRecurso> taAlocacaoRecursos) {
        this.taAlocacaoRecursos = taAlocacaoRecursos;
    }

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "tbAtividade")
    public Set<TaPedidoServico> getTaPedidoServicos() {
        return this.taPedidoServicos;
    }

    public void setTaPedidoServicos(Set<TaPedidoServico> taPedidoServicos) {
        this.taPedidoServicos = taPedidoServicos;
    }

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "tbAtividade")
    public Set<TaParticipacao> getTaParticipacaos() {
        return this.taParticipacaos;
    }

    public void setTaParticipacaos(Set<TaParticipacao> taParticipacaos) {
        this.taParticipacaos = taParticipacaos;
    }
    // Sobrescrevendo metodos utilitarios importantes   
    @Override
    public String toString() {
        return this.nmeAtividade;
    }

    @Override
    public boolean equals(Object outro) {
        return (outro instanceof TbAtividade) && (this.idtAtividade != null)
                ? idtAtividade.equals(((TbAtividade) outro).getIdtAtividade())
                : (outro == this);
    }

    @Override
    public int hashCode() {
        return (idtAtividade != null)
                ? (this.getClass().hashCode() + idtAtividade.hashCode())
                : super.hashCode();
    }
}
